package it.heima.xmy.Demo01;

import java.io.*;

/*实现对图片文件进行切割
> 在开发中，文件切割通常有两种方案：
> 1、按照文件大小切割
>    例： 107M文件， 按照10M一个文件切割
> 2、按照文件个数切割
>    例：107M文件，需要切割为10个文件
切割文件的思路：
1、创建一个输入流对象，用来读取文件
2、创建多个输出流对象，把读取的文件分别写入到不同的文件中(碎片文件)
3、整个读取结束后，切割全部切割为多个碎片文件
宇哥真帅*/
public class Practise06 {
    public static void main(String[] args) throws IOException {
        File file1 = new File("F:\\test06\\123.mp4");
        File file2 = new File("F:\\test07");
        file2.mkdirs();
        FileInputStream fis = new FileInputStream(file1);
        FileOutputStream fos1 = new FileOutputStream(new File(file2, "1.mp4"));
        //设置数组的长度，一次读取数组长度大小直到把文件读取完毕
        byte[] bytes1 = new byte[(int) (file1.length() / 3)];
        //多次读取切割
        int one = -1;
        one = fis.read(bytes1);
        fos1.write(bytes1, 0, one);

        FileOutputStream fos2 = new FileOutputStream(new File(file2, "2.mp4"));
        //设置数组的长度，一次读取数组长度大小直到把文件读取完毕
        byte[] bytes2 = new byte[(int) (file1.length() / 3)];
        //多次读取切割
        int two = -1;
        two = fis.read(bytes2);
        fos2.write(bytes2, 0, two);

        FileOutputStream fos3 = new FileOutputStream(new File(file2, "3.mp4"));
        //设置数组的长度，一次读取数组长度大小直到把文件读取完毕
        byte[] bytes3 =
                new byte[(int) (file1.length() - bytes1.length - bytes2.length)];
        //多次读取切割
        int three = -1;
        three = fis.read(bytes3);
        fos3.write(bytes3, 0, one);
        fis.close();
        fos3.close();
        fos2.close();
        fos1.close();

    }

//    public static File splitFile(File file1, File file2) throws IOException {
//        //创建流对象进行数据读取  读取固定大小
//
//    }

